package com.xuecheng.system.controller;

import com.xuecheng.commons.model.vo.CompanyVo;
import com.xuecheng.commons.model.vo.ResponseResult;
import com.xuecheng.commons.utils.AuthInfoHolder;
import com.xuecheng.commons.utils.BeanHelper;
import com.xuecheng.system.domain.Company;
import com.xuecheng.system.service.CompanyService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 教育机构前端控制器
 */
@Slf4j
@RestController
@RequestMapping("/company")
public class CompanyController {

    @Autowired
    private CompanyService  companyService;

    /**
     * 查询当前用户所属机构
     * 请求地址：GET  /mine
     * 请求参数：Headers ： Authorization（token）
     *    @RequestHeader("Authorization") ： 从请求头中获取指定的请求头参数
     * 返回值：ResponseResult<CompanyVo>
     */
    @GetMapping("/mine")
    public ResponseResult<CompanyVo> mine() {
        //从当前线程获取，当前用户的信息
        Long companyId = AuthInfoHolder.getCompanyId();
        //3、调用service根据id查询企业信息 ：Company
        Company company = companyService.getById(companyId);
        //4、返回 ,根据实体类，反射创建vo对象（对象属性必须一致）
        CompanyVo vo = BeanHelper.copyProperties(company, CompanyVo.class);
        return ResponseResult.okResult(vo);
    }
//    @GetMapping("/mine")
//    public ResponseResult<CompanyVo> mine(@RequestHeader("Authorization") String token
//            ,@RequestHeader("payload") String payload) throws Exception {
//
//        String json = URLDecoder.decode(payload, "UTF-8");
//        log.info("json = " + json);
//        AuthInfo info = JSON.parseObject(json, AuthInfo.class);
//        log.info("info = " + info);
//
//        //1、校验token是否合法，如果不合法抛出异常（通过JWTs工具类进行解析，一旦抛出异常，即认为token失效）
//        Boolean verifyToken = JwtUtils.verifyToken(token);
//        if(!verifyToken) {
//            throw new BusinessException(ErrorCode.ERROR);
//        }
//        //2、解析token，获取用户的companyId (claims = map集合)
//        Claims claims = JwtUtils.parserToken(token).getBody();
//        Long companyId = claims.get("companyId", Long.class);
//        //3、调用service根据id查询企业信息 ：Company
//        Company company = companyService.getById(companyId);
//        //4、返回 ,根据实体类，反射创建vo对象（对象属性必须一致）
//        CompanyVo vo = BeanHelper.copyProperties(company, CompanyVo.class);
//        return ResponseResult.okResult(vo);
//    }
}
